package com.city.lambda.syntax;

import com.city.lambda.interfaces.*;

/**
 * Created with IntelliJ IDEA.
 * User: Cheng
 * Date: 2020/4/19
 * Time: 22:39
 * Description: No Description
 */
public class Syntax_1 {
    public static void main(String[] args) {
        //Lambda基本语法
        //Lambda是一个匿名函数
        /*  传统匿名函数  new Thread(new Runnable() {
                public void run() {
                    System.out.println("hello");
                }
            }).start();
        */
        //参数列表和方法体
        //()  -用来描述参数
        //{}  -用来表述方法体
        //->  -lambda运算符，读作goes to

        //1、无参无返回
        LambdaNoneReturnNoneParameter lambda_1=()->{
            //实现方法体 - void test();
            System.out.println("lambda_1");
            //后相当于
            /*void test(){
                System.out.println("lambda_1");
            }*/
        };//实现接口抽象方法，执行方法体，封装成lambda_1对象，通过对象执行方法
        lambda_1.test();

        //2、无返回单个参数
        LambdaNoneReturnSingleParameter lambda_2=(int a)->{
            System.out.println(a);
        };
        lambda_2.test(2);

        //3、无返回多个参数
        LambdaNoneReturnMutipleParameter lambda_3=(int a,int b)->{
            //参数，抽象方法的方法体为一下方法体
            System.out.println(a-b);
        };
        lambda_3.test(2,1);

        //4、无参数，有返回值
        LambdaSingleReturnNoneParameter lambda_4=()->{
            System.out.println("lambda_4");
            return 100;
        };
        int test4 = lambda_4.test();
        System.out.println(test4);

        //5、一个参数，有返回值
        LambdaSingleReturnSingleParameter lambda_5=(int a)->{
            System.out.println("lambda_5");
            return a;
        };
        int test5 = lambda_5.test(2);
        System.out.println(test5);

        //5、多个参数，有返回值
        LambdaSingleReturnMutipleParameter lambda_6=(int a,int b)->{
            int c=a-b;
            return c;
        };
        int test6 = lambda_6.test(2,3);
        System.out.println(test6);
    }
}
